package org.dwpd.service.message;

import jakarta.servlet.http.HttpServletRequest;
import org.dwpd.domain.message.Message;
import org.dwpd.domain.message.MessageInfo;
import org.dwpd.domain.common.Result;
import org.dwpd.domain.inbox.UserMessageResponse;

import java.util.List;

public interface MessageService{
    Result addMessage(Message message, HttpServletRequest request);

    Result getAllMessageById();

    Result getMessageDetailById(Integer messageId);

    Result updateAccomplish(Integer messageId);

    Result deleteMessage(Integer messageId);

    Result updateMessage(Message message);

    Result updateMessageOverTime();

    Result getAllMessage(Integer typeId);

    void addRequestMessage(UserMessageResponse resp);

    Result getMessageDetailByUser(Integer messageId);

    Result addSeat(Integer messageId);

    Result agreeUserSeat(Integer userId, Integer messageId);

    Result removeUserSeat(Integer userId, Integer messageId);

    Result userLeaveSeat(Integer messageId);

    Result rejectUserSeat(Integer userId, Integer messageId);

    void addAgreeMessage(UserMessageResponse resp);

    void addRejectMessage(UserMessageResponse resp);

    Result lockMessage(Integer messageId);

    List<MessageInfo> getMessageByIds(List<Integer> ids);

    void accomplishAllOverTimeTask();

    void addInformMessage(UserMessageResponse resp);

    Result getOnSeatUsersByMessageId(Integer messageId);

    Result getUserRootFlagInMessage(Integer messageId);

    Result getOnSeatHistoryByUserId(Integer userId);
}
